Actividad 06 de junio

Valentina Padilla

Instalación desde el repositorio CRAN

install.packages("plotly")

RENDERING CHARTS

Code
library(plotly)
fig=plot_ly(midwest, x= ~percollege, color= ~state, type="box")
Code
fig

Gráfico de dispersión:

Code
fig=plot_ly(data=iris, x= ~Sepal.Length, y= ~Petal.Length);fig

Agregando color al gráfico anterior.

Code
fig=plot_ly(data=iris, x= ~Sepal.Length, y= ~Petal.Length,
            marker= list(size=10,
                         color='rgba(255,182,193,.9)',
                         line= list(color='rgba(152,0,0,.8',
                         width=2)));fig
Code
fig=fig|>layout(title='Styled Scatter',
                yaxis=list(zeroline=FALSE),
                xaxis=list(zeroline=FALSE))

Agregando color por especies.

Code
fig=plot_ly(data=iris, x= ~Sepal.Length, y= ~Petal.Length,color=~Species);fig

Trazar puntos y lineas.

Code
trace_0=rnorm(100,mean = 5)
trace_1=rnorm(100,mean = 0)
trace_2=rnorm(100,mean = -5)
x=c(1:100)
data=data.frame(x,trace_0,trace_1,trace_2)
fig=plot_ly(data,x=~x)
fig=fig|>add_trace(y=~trace_0,name='trace 0',mode='lines')
fig=fig|>add_trace(y=~trace_1,name='trace 1',mode='lines+markers')
fig=fig|>add_trace(y=~trace_2,name='trace 2',mode='markers')

Gráfica:

Code
fig

Otro ejemplo:

Code
trace_0=rnorm(100,mean = 5)
trace_1=rnorm(100,mean = 0)
trace_2=rnorm(100,mean = -5)
x=c(1:100)
data=data.frame(x,trace_0,trace_1,trace_2)
fig=plot_ly(data,x=~x, y=~trace_0,name='trace 0',type='scatter',mode='lines')
fig=fig|>add_trace(y=~trace_1,name='trace 1',mode='lines+markers')
fig=fig|>add_trace(y=~trace_2,name='trace 2',mode='markers')

Gráfica:

Code
fig

Estilos de lineas.

Code
month = c('January', 'February', 'March', 'April', 'May', 'June', 'July',
         'August', 'September', 'October', 'November', 'December')
high_2000 = c(32.5, 37.6, 49.9, 53.0, 69.1, 75.4, 76.5, 76.6, 70.7, 60.6, 45.1, 29.3)
low_2000 = c(13.8, 22.3, 32.5, 37.2, 49.9, 56.1, 57.7, 58.3, 51.2, 42.8, 31.6, 15.9)
high_2007 = c(36.5, 26.6, 43.6, 52.3, 71.5, 81.4, 80.5, 82.2, 76.0, 67.3, 46.1, 35.0)
low_2007 = c(23.6, 14.0, 27.0, 36.8, 47.6, 57.7, 58.9, 61.2, 53.3, 48.5, 31.0, 23.6)
high_2014 = c(28.8, 28.5, 37.0, 56.8, 69.7, 79.7, 78.5, 77.8, 74.1, 62.6, 45.3, 39.9)
low_2014 = c(12.7, 14.3, 18.6, 35.5, 49.9, 58.0, 60.0, 58.6, 51.7, 45.2, 32.2, 29.1)

data = data.frame(month, high_2000, low_2000, high_2007, low_2007, high_2014, low_2014)

#The default order will be alphabetized unless specified as below:
data$month = factor(data$month, levels = data[["month"]])

fig = plot_ly(data, x = ~month, y = ~high_2014, name = 'High 2014', type = 'scatter', mode = 'lines',
        line = list(color = 'rgb(205, 12, 24)', width = 4)) 
fig = fig %>% add_trace(y = ~low_2014, name = 'Low 2014', line = list(color = 'rgb(22, 96, 167)', width = 4)) 
fig = fig %>% add_trace(y = ~high_2007, name = 'High 2007', line = list(color = 'rgb(205, 12, 24)', width = 4, dash = 'dash')) 
fig = fig %>% add_trace(y = ~low_2007, name = 'Low 2007', line = list(color = 'rgb(22, 96, 167)', width = 4, dash = 'dash')) 
fig = fig %>% add_trace(y = ~high_2000, name = 'High 2000', line = list(color = 'rgb(205, 12, 24)', width = 4, dash = 'dot')) 
fig = fig %>% add_trace(y = ~low_2000, name = 'Low 2000', line = list(color = 'rgb(22, 96, 167)', width = 4, dash = 'dot')) 
fig = fig %>% layout(title = "Average High and Low Temperatures in New York",
         xaxis = list(title = "Months"),
         yaxis = list (title = "Temperature (degrees F)"))

Gráfica:

Code
fig

Opciones de interpolación de línea.

Code
library(plotly)

x=c(1:5)
y=c(1,3,2,3,1)

fig=plot_ly(x=~x)
fig=fig %>% add_lines(y=~y,name="linear",line=list(shape="linear"))
fig=fig %>% add_lines(y=~y+5,name="spline",line=list(shape="spline"))
fig=fig %>% add_lines(y=~y+10,name="vhv",line=list(shape="vhv"))
fig=fig %>% add_lines(y=~y+15,name="hvh",line=list(shape="hvh"))
fig=fig %>% add_lines(y=~y+20,name="vh",line=list(shape="vh"))
fig=fig %>% add_lines(y=~y+25,name="hv",line=list(shape="hv"))

Gráfica:

Code
fig

Conectar brechas de datos.

Code
library(plotly)

x = c(1:15)
y = c(10, 20, NA, 15, 10, 5, 15, NA, 20, 10, 10, 15, 25, 20, 10)

data = data.frame(x, y)

fig = plot_ly(data, x = ~x, y = ~y, name = "Gaps", type = 'scatter', mode = 'lines') 
fig = fig %>% add_trace(y = ~y - 5, name = "<b>No</b> Gaps", connectgaps = TRUE)

fig

Etiquetar lineas con anotaciones:

Code
x = c(2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2013)
y_television = c(74, 82, 80, 74, 73, 72, 74, 70, 70, 66, 66, 69)
y_internet = c(13, 14, 20, 24, 20, 24, 24, 40, 35, 41, 43, 50)
data = data.frame(x, y_television, y_internet)

xaxis = list(title = "",
             showline = TRUE,
             showgrid = FALSE,
             showticklabels = TRUE,
             linecolor = 'rgb(204, 204, 204)',
             linewidth = 2,
             autotick = FALSE,
             ticks = 'outside',
             tickcolor = 'rgb(204, 204, 204)',
             tickwidth = 2,
             ticklen = 5,
             tickfont = list(family = 'Arial',
                             size = 12,
                             color = 'rgb(82, 82, 82)'))

yaxis = list(title = "",
             showgrid = FALSE,
             zeroline = FALSE,
             showline = FALSE,
             showticklabels = FALSE)

margin = list(autoexpand = FALSE,
              l = 100,
              r = 100,
              t = 110)

# Build the annotations

television_1 = list(
  xref = 'paper',
  yref = 'y',
  x = 0.05,
  y = y_television[1],
  xanchor = 'right',
  yanchor = 'middle',
  text = ~paste('Television ', y_television[1], '%'),
  font = list(family = 'Arial',
              size = 16,
              color = 'rgba(67,67,67,1)'),
  showarrow = FALSE)

internet_1 = list(
  xref = 'paper',
  yref = 'y',
  x = 0.05,
  y = y_internet[1],
  xanchor = 'right',
  yanchor = 'middle',
  text = ~paste('Internet ', y_internet[1], '%'),
  font = list(family = 'Arial',
              size = 16,
              color = 'rgba(49,130,189, 1)'),
  showarrow = FALSE)

television_2 = list(
  xref = 'paper',
  x = 0.95,
  y = y_television[12],
  xanchor = 'left',
  yanchor = 'middle',
  text = paste('Television ', y_television[12], '%'),
    font = list(family = 'Arial',
                size = 16,
                color = 'rgba(67,67,67,1)'),
  showarrow = FALSE)

internet_2 = list(
  xref = 'paper',
  x = 0.95,
  y = y_internet[12],
  xanchor = 'left',
  yanchor = 'middle',
  text = paste('Internet ', y_internet[12], '%'),
    font = list(family = 'Arial',
                size = 16,
                color = 'rgba(67,67,67,1)'),
  showarrow = FALSE)

fig = plot_ly(data, x = ~x) 
fig = fig %>% add_trace(y = ~y_television, type = 'scatter', mode = 'lines', line = list(color = 'rgba(67,67,67,1)', width = 2))  
fig = fig %>% add_trace(y = ~y_internet, type = 'scatter', mode = 'lines', line = list(color = 'rgba(49,130,189, 1)', width = 4)) 
fig = fig %>% add_trace(x = ~c(x[1], x[12]), y = ~c(y_television[1], y_television[12]), type = 'scatter', mode = 'markers', marker = list(color = 'rgba(67,67,67,1)', size = 8)) 
fig = fig %>% add_trace(x = ~c(x[1], x[12]), y = ~c(y_internet[1], y_internet[12]), type = 'scatter', mode = 'markers', marker = list(color = 'rgba(49,130,189, 1)', size = 12)) 
fig = fig %>% layout(title = "Main Source for News", xaxis = xaxis, yaxis = yaxis, margin = margin,
         autosize = FALSE,
         showlegend = FALSE,
         annotations = television_1) 
fig = fig %>% layout(annotations = internet_1) 
fig = fig %>% layout(annotations = television_2) 
fig = fig %>% layout(annotations = internet_2)

Gráfica:

Code
fig

Relleno entre lineas.

Code
month = c('January', 'February', 'March', 'April', 'May', 'June', 'July',
           'August', 'September', 'October', 'November', 'December')
high_2014 = c(28.8, 28.5, 37.0, 56.8, 69.7, 79.7, 78.5, 77.8, 74.1, 62.6, 45.3, 39.9)
low_2014 = c(12.7, 14.3, 18.6, 35.5, 49.9, 58.0, 60.0, 58.6, 51.7, 45.2, 32.2, 29.1)
data = data.frame(month, high_2014, low_2014)
data$average_2014 = rowMeans(data[,c("high_2014", "low_2014")])

#The default order will be alphabetized unless specified as below:
data$month = factor(data$month, levels = data[["month"]])

fig = plot_ly(data, x = ~month, y = ~high_2014, type = 'scatter', mode = 'lines',
        line = list(color = 'transparent'),
        showlegend = FALSE, name = 'High 2014') 
fig = fig %>% add_trace(y = ~low_2014, type = 'scatter', mode = 'lines',
            fill = 'tonexty', fillcolor='rgba(0,100,80,0.2)', line = list(color = 'transparent'),
            showlegend = FALSE, name = 'Low 2014') 
fig = fig %>% add_trace(x = ~month, y = ~average_2014, type = 'scatter', mode = 'lines',
            line = list(color='rgb(0,100,80)'),
            name = 'Average') 
fig = fig %>% layout(title = "Average, High and Low Temperatures in New York",
         paper_bgcolor='rgb(255,255,255)', plot_bgcolor='rgb(229,229,229)',
         xaxis = list(title = "Months",
                      gridcolor = 'rgb(255,255,255)',
                      showgrid = TRUE,
                      showline = FALSE,
                      showticklabels = TRUE,
                      tickcolor = 'rgb(127,127,127)',
                      ticks = 'outside',
                      zeroline = FALSE),
         yaxis = list(title = "Temperature (degrees F)",
                      gridcolor = 'rgb(255,255,255)',
                      showgrid = TRUE,
                      showline = FALSE,
                      showticklabels = TRUE,
                      tickcolor = 'rgb(127,127,127)',
                      ticks = 'outside',
                      zeroline = FALSE))

Gráfica:

Code
fig

Gráfica de densidad.

Code
dens=with(diamonds, tapply(price, INDEX = cut, density))
df=data.frame(
  x = unlist(lapply(dens, "[[", "x")),
  y = unlist(lapply(dens, "[[", "y")),
  cut = rep(names(dens), each = length(dens[[1]]$x))
)

fig=plot_ly(df, x = ~x, y = ~y, color = ~cut) 
fig=fig %>% add_lines()

Resultado:

Code
fig

Escalas de colores cualitativas.

Code
fig <- plot_ly(data = iris, x = ~Sepal.Length, y = ~Petal.Length, color = ~Species)

fig

Nombres de paletas:ColorBrewer.

Code
fig <- plot_ly(data = iris, x = ~Sepal.Length, y = ~Petal.Length, color = ~Species, colors = "Set1")
fig

Mapeo de datos a símbolos.

Code
fig <- plot_ly(data = iris, x = ~Sepal.Length, y = ~Petal.Length, type = 'scatter',
  mode = 'markers', symbol = ~Species, symbols = c('circle','x','o'),
  color = I('pink'), marker = list(size = 10))
fig

Agregar asignación de color y tamaño.

Code
d=diamonds[sample(nrow(diamonds), 1000), ]

fig=plot_ly(
  d, x = ~carat, y = ~price,
  color = ~carat, size = ~carat
);fig

Etiquetas de datos al pasar el cursor.

Code
d=diamonds[sample(nrow(diamonds), 1000), ]

fig=plot_ly(
  d, x = ~carat, y = ~price,
  # Hover text:
  text = ~paste("Price: ", price, '$<br>Cut:', cut),
  color = ~carat, size = ~carat
);fig

Gráficos de barras:

Code
x=c("giraffes", "orangutans", "monkeys")
y=c(20, 14, 23)
fig <- plot_ly(
  x = x ,
  y = y ,
  name = "SF Zoo",
  type = "bar"
);fig

Gráficos de barras agrupadas.

Code
Animals=c("giraffes", "orangutans", "monkeys")
SF_Zoo=c(20, 14, 23)
LA_Zoo=c(12, 18, 29)
data=data.frame(Animals, SF_Zoo, LA_Zoo)

fig=plot_ly(data, x = ~Animals, y = ~SF_Zoo, type = 'bar', name = 'SF Zoo')
fig=fig %>% add_trace(y = ~LA_Zoo, name = 'LA Zoo')
fig=fig %>% layout(yaxis = list(title = 'Count'), barmode = 'group')

Resultado:

Code
fig